還記得前幾天我們run起Vault dev Server了嗎?
我們也可以採用tls方式run起伺服器,並指定root token的值:
vault server -dev -dev-listen-address="0.0.0.0:8200" -dev-root-token-id root -dev-tls
Root Token 可以把它想像成 Vault 裡面的「最高管理員憑證」。它擁有非常高的權限,幾乎可以操作 Vault 中的所有功能,例如建立 Policy、設定 Authentication Method、讀寫 Secrets,甚至建立其他 Token。
因此,在正式環境中並不建議讓應用程式直接使用 Root Token,而是應該透過 Policy 與不同的 Authentication Method,替不同的使用者或應用程式配置最小必要權限。
啟動 Vault 後,我們可以開啟瀏覽器進入:
https://:8200
接著選擇 Token 作為登入方式,並輸入剛才設定的:
root
成功登入後,就可以看到 Vault 提供的 Web UI,並透過圖形化介面管理 Secrets、Authentication、Policies 等功能。

不過這裡有一個非常重要的觀念:Dev Server 與正式環境中的 Vault 初始化流程並不相同。
使用 vault server -dev 啟動時,Vault 會自動完成初始化(Initialize)與解封(Unseal),並且直接產生 Root Token,因此我們可以馬上開始操作。
但在正式模式下啟動 Vault 時,Vault 一開始會處於 Uninitialized 狀態。我們必須先執行:
vault operator init
Vault 才會產生初始化所需要的資訊,其中最重要的就是:
例如:
Unseal Key 1: xxxxx
Unseal Key 2: xxxxx
Unseal Key 3: xxxxx
Unseal Key 4: xxxxx
Unseal Key 5: xxxxx
Initial Root Token: hvs.xxxxxxxxx
Root Token 是「權限」的概念,用來證明你有權限操作 Vault;而 Unseal Key 則是「解鎖 Vault」的概念,用來讓 Vault 能夠取得解密資料所需的 Encryption Key。
換句話說:
Root Token 決定你能不能操作 Vault;Unseal Key 決定 Vault 本身能不能開始工作。
前面提到在我們啟動 Vault 伺服器時,它會以密封狀態啟動。在這種狀態下,Vault 可以存取實體存儲,但無法解密其中的任何資料。
因此,Unseal 指的是取得解密金鑰的過程,需要利用足夠數量的 Unseal Keys 重建 Root Key,讓 Vault 能解密它的 Encryption Key,進而正常讀寫 Vault 裡的資料。